home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 125 / Computer Shopper CD-ROM Issue 125 (1998-07)(Dennis Publishing).iso / Business / Dazzler / DAZZLER.Z / COffScreenView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-26  |  7.6 KB  |  789 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.awt.Point;
  8. import java.awt.Rectangle;
  9. import java.awt.image.ImageObserver;
  10. import java.util.NoSuchElementException;
  11.  
  12. class COffScreenView extends CWindow {
  13.    CDrawObjectList m_DrawObjectList = new CDrawObjectList();
  14.    Image m_OffScreenBmp;
  15.    Graphics m_pOffScreenDC;
  16.    Dimension m_OffScreenBmpSize;
  17.    CRectList m_DirtyList = new CRectList();
  18.    Color m_colBg = new Color(255, 255, 255);
  19.    Point m_ptOffset = new Point(0, 0);
  20.  
  21.    boolean SetOffScreenBufferBkColour(Color var1) {
  22.       if (var1 != null && !var1.equals(this.m_colBg)) {
  23.          this.m_colBg = var1;
  24.          ((Component)this).setBackground(var1);
  25.          return true;
  26.       } else {
  27.          return false;
  28.       }
  29.    }
  30.  
  31.    void Render(CRect var1) {
  32.       if (var1 == null) {
  33.          var1.reshape(((CWindow)this).GetClientRect());
  34.          this.m_DirtyList.RemoveAll();
  35.       }
  36.  
  37.       Graphics var2 = this.m_pOffScreenDC.create();
  38.       var2.setColor(this.m_colBg);
  39.       var2.clipRect(var1.x, var1.y, var1.width, var1.height);
  40.       var2.fillRect(var1.x, var1.y, var1.width + 1, var1.height + 1);
  41.       this.RenderObjectList(var2, var1);
  42.    }
  43.  
  44.    CRect RemoveDrawObject(String var1, boolean var2) {
  45.       CRect var3 = new CRect();
  46.       CRect var4 = new CRect();
  47.       CDrawObj var5 = null;
  48.       boolean var6 = false;
  49.       boolean var7 = false;
  50.       boolean var8 = false;
  51.       synchronized(this.m_DrawObjectList){}
  52.  
  53.       try {
  54.          try {
  55.             var5 = this.m_DrawObjectList.GetHead();
  56.          } catch (NoSuchElementException var17) {
  57.             var6 = true;
  58.          }
  59.  
  60.          while(!var6) {
  61.             var7 = false;
  62.             if (var5 != null && var5.GetIconObject() != null && var5.GetIconObject().GetText().equals(var1)) {
  63.                var3.reshape(var5.GetDrawRect());
  64.                if (!((Rectangle)var3).isEmpty()) {
  65.                   this.InvalidateOffScreenRect(var3);
  66.                   if (((Rectangle)var4).isEmpty()) {
  67.                      var4.reshape(var3);
  68.                   } else {
  69.                      var4 = var4.union(var3);
  70.                   }
  71.                }
  72.  
  73.                if (!var2 && this.m_DrawObjectList.removeElement(var5)) {
  74.                   var5.GetIconObject().FreeObject();
  75.                   Globals.theAnimThread.RemoveAnimObject(var5);
  76.                   var7 = true;
  77.                   var8 = true;
  78.                }
  79.             }
  80.  
  81.             if (var7) {
  82.                try {
  83.                   var5 = this.m_DrawObjectList.GetCurrent();
  84.                } catch (NoSuchElementException var16) {
  85.                   var6 = true;
  86.                }
  87.             } else {
  88.                try {
  89.                   var5 = this.m_DrawObjectList.GetNext();
  90.                } catch (NoSuchElementException var15) {
  91.                   var6 = true;
  92.                }
  93.             }
  94.          }
  95.       } catch (Throwable var18) {
  96.          throw var18;
  97.       }
  98.  
  99.       if (var8) {
  100.          this.CloseCoursesIfPossible();
  101.       }
  102.  
  103.       return var4;
  104.    }
  105.  
  106.    void DoEntryResponses() {
  107.       CDrawObj var1 = new CDrawObj();
  108.       boolean var2 = false;
  109.       synchronized(this.m_DrawObjectList){}
  110.  
  111.       try {
  112.          try {
  113.             var1 = this.m_DrawObjectList.GetHead();
  114.          } catch (NoSuchElementException var9) {
  115.             var2 = true;
  116.          }
  117.  
  118.          while(!var2) {
  119.             var1.GetIconObject().DoEntryResponse();
  120.  
  121.             try {
  122.                var1 = this.m_DrawObjectList.GetNext();
  123.             } catch (NoSuchElementException var8) {
  124.                var2 = true;
  125.             }
  126.          }
  127.       } catch (Throwable var10) {
  128.          throw var10;
  129.       }
  130.  
  131.    }
  132.  
  133.    void RenderAndDrawDirtyList() {
  134.       CRect var1 = null;
  135.       boolean var2 = false;
  136.  
  137.       try {
  138.          var1 = this.m_DirtyList.GetHead();
  139.       } catch (NoSuchElementException var4) {
  140.          var2 = true;
  141.       }
  142.  
  143.       while(!var2) {
  144.          this.Render(var1);
  145.          this.Draw((Graphics)null, var1);
  146.  
  147.          try {
  148.             var1 = this.m_DirtyList.GetNext();
  149.          } catch (NoSuchElementException var3) {
  150.             var2 = true;
  151.          }
  152.       }
  153.  
  154.       this.m_DirtyList.RemoveAll();
  155.    }
  156.  
  157.    void InvalidateOffScreenRect(CRect var1) {
  158.       if (var1 != null && !((Rectangle)var1).isEmpty()) {
  159.          CRect var2 = new CRect();
  160.          boolean var3 = false;
  161.  
  162.          try {
  163.             var2.reshape(this.m_DirtyList.GetHead());
  164.             if (((Rectangle)var2).equals(((CWindow)this).GetClientRect())) {
  165.                return;
  166.             }
  167.          } catch (NoSuchElementException var5) {
  168.             var3 = true;
  169.          }
  170.  
  171.          while(!var3) {
  172.             if (((Rectangle)var2).intersects(var1)) {
  173.                var1 = var1.union(var2);
  174.                this.m_DirtyList.removeElement(var2);
  175.             }
  176.  
  177.             try {
  178.                var2.reshape(this.m_DirtyList.GetNext());
  179.             } catch (NoSuchElementException var4) {
  180.                var3 = true;
  181.             }
  182.          }
  183.  
  184.          this.m_DirtyList.Add(var1);
  185.       } else {
  186.          var1 = new CRect(((CWindow)this).GetClientRect());
  187.          this.m_DirtyList.RemoveAll();
  188.          this.m_DirtyList.Add(var1);
  189.       }
  190.    }
  191.  
  192.    void RemoveDrawObject(CIconObject var1) {
  193.       CDrawObj var2 = null;
  194.       boolean var3 = false;
  195.       boolean var4 = false;
  196.       boolean var5 = false;
  197.       if (var1 != null && !Globals.thePresView.IsLayerLocked(var1.GetZOrder())) {
  198.          synchronized(this.m_DrawObjectList){}
  199.  
  200.          try {
  201.             try {
  202.                var2 = this.m_DrawObjectList.GetHead();
  203.             } catch (NoSuchElementException var14) {
  204.                var3 = true;
  205.             }
  206.  
  207.             while(!var3) {
  208.                var4 = false;
  209.                if (var2 != null && var2.GetIconObject() == var1 && this.m_DrawObjectList.removeElement(var2)) {
  210.                   this.InvalObj(var2);
  211.                   var2.GetIconObject().FreeObject();
  212.                   Globals.theAnimThread.RemoveAnimObject(var2);
  213.                   var4 = true;
  214.                   var5 = true;
  215.                }
  216.  
  217.                if (var4) {
  218.                   try {
  219.                      var2 = this.m_DrawObjectList.GetCurrent();
  220.                   } catch (NoSuchElementException var13) {
  221.                      var3 = true;
  222.                   }
  223.                } else {
  224.                   try {
  225.                      var2 = this.m_DrawObjectList.GetNext();
  226.                   } catch (NoSuchElementException var12) {
  227.                      var3 = true;
  228.                   }
  229.                }
  230.             }
  231.          } catch (Throwable var15) {
  232.             throw var15;
  233.          }
  234.  
  235.          if (var5) {
  236.             this.CloseCoursesIfPossible();
  237.          }
  238.       }
  239.  
  240.    }
  241.  
  242.    CDrawObj FindDrawObject(String var1) {
  243.       CDrawObj var2 = null;
  244.       boolean var3 = false;
  245.       synchronized(this.m_DrawObjectList){}
  246.  
  247.       try {
  248.          try {
  249.             var2 = this.m_DrawObjectList.GetHead();
  250.          } catch (NoSuchElementException var11) {
  251.             var3 = true;
  252.          }
  253.  
  254.          while(!var3) {
  255.             if (var2.GetIconObject().GetText().equals(var1)) {
  256.                CDrawObj var6 = var2;
  257.                return var6;
  258.             }
  259.  
  260.             try {
  261.                var2 = this.m_DrawObjectList.GetNext();
  262.             } catch (NoSuchElementException var10) {
  263.                var3 = true;
  264.             }
  265.          }
  266.  
  267.          return null;
  268.       } catch (Throwable var12) {
  269.          throw var12;
  270.       }
  271.    }
  272.  
  273.    boolean OnMouseMove(int var1, Point var2) {
  274.       CDrawObj var3 = null;
  275.       boolean var4 = false;
  276.       synchronized(this.m_DrawObjectList){}
  277.  
  278.       try {
  279.          try {
  280.             var3 = this.m_DrawObjectList.GetHead();
  281.          } catch (NoSuchElementException var11) {
  282.             var4 = true;
  283.          }
  284.  
  285.          while(!var4) {
  286.             if (var3 != null) {
  287.                var3.GetIconObject().OnMouseMove(var1, var2, 6, var3.GetDrawRect());
  288.             }
  289.  
  290.             try {
  291.                var3 = this.m_DrawObjectList.GetNext();
  292.             } catch (NoSuchElementException var10) {
  293.                var4 = true;
  294.             }
  295.          }
  296.       } catch (Throwable var12) {
  297.          throw var12;
  298.       }
  299.  
  300.       if (Globals.CUR_COURSE != null) {
  301.          Globals.CUR_COURSE.OnMouseMove(var1, var2);
  302.       }
  303.  
  304.       return true;
  305.    }
  306.  
  307.    void Draw(Graphics var1, CRect var2) {
  308.       CRect var4 = new CRect();
  309.       Graphics var3 = var1 == null ? ((CWindow)this).GetDC() : var1.create();
  310.       var4.reshape(var2 == null ? ((CWindow)this).GetClientRect() : var2);
  311.       if (var3 != null) {
  312.          Graphics var5 = var3.create();
  313.          var5.clipRect(var4.x, var4.y, var4.width, var4.height);
  314.          var5.drawImage(this.m_OffScreenBmp, 0, 0, (ImageObserver)null);
  315.       }
  316.  
  317.    }
  318.  
  319.    boolean OnNotify(int var1, String var2) {
  320.       CDrawObj var3 = null;
  321.       boolean var4 = false;
  322.       boolean var5 = false;
  323.       synchronized(this.m_DrawObjectList){}
  324.  
  325.       try {
  326.          try {
  327.             var3 = this.m_DrawObjectList.GetHead();
  328.          } catch (NoSuchElementException var12) {
  329.             var4 = true;
  330.          }
  331.  
  332.          while(!var4) {
  333.             if (var3 != null && var3.GetIconObject() != null) {
  334.                var3.GetIconObject().OnNotify(var1, var2);
  335.             }
  336.  
  337.             try {
  338.                var3 = this.m_DrawObjectList.GetNext();
  339.             } catch (NoSuchElementException var11) {
  340.                var4 = true;
  341.             }
  342.          }
  343.       } catch (Throwable var13) {
  344.          throw var13;
  345.       }
  346.  
  347.       if (Globals.CUR_COURSE != null) {
  348.          var5 = Globals.CUR_COURSE.OnNotify(var1, var2);
  349.       }
  350.  
  351.       return var5;
  352.    }
  353.  
  354.    void CanRemoveDrawObjects(CRect var1, CIconObject var2) {
  355.       CDrawObj var3 = null;
  356.       boolean var4 = false;
  357.       boolean var5 = false;
  358.       boolean var6 = false;
  359.       if (var1 != null && var2 != null) {
  360.          synchronized(this.m_DrawObjectList){}
  361.  
  362.          try {
  363.             try {
  364.                var3 = this.m_DrawObjectList.GetHead();
  365.             } catch (NoSuchElementException var15) {
  366.                var4 = true;
  367.             }
  368.  
  369.             while(!var4) {
  370.                var5 = false;
  371.                if (var3 != null && var3.GetIconObject() != null && var3.GetIconObject() != var2 && !Globals.thePresView.IsLayerLocked(var3.GetIconObject().GetZOrder()) && var3.GetIconObject().CanFreeObject(var1) && this.m_DrawObjectList.removeElement(var3)) {
  372.                   var5 = true;
  373.                   var6 = true;
  374.                   this.InvalObj(var3);
  375.                   var3.GetIconObject().FreeObject();
  376.                   Globals.theAnimThread.RemoveAnimObject(var3);
  377.                }
  378.  
  379.                if (var5) {
  380.                   try {
  381.                      var3 = this.m_DrawObjectList.GetCurrent();
  382.                   } catch (NoSuchElementException var14) {
  383.                      var4 = true;
  384.                   }
  385.                } else {
  386.                   try {
  387.                      var3 = this.m_DrawObjectList.GetNext();
  388.                   } catch (NoSuchElementException var13) {
  389.                      var4 = true;
  390.                   }
  391.                }
  392.             }
  393.          } catch (Throwable var16) {
  394.             throw var16;
  395.          }
  396.  
  397.          if (var6) {
  398.             this.CloseCoursesIfPossible();
  399.          }
  400.       }
  401.  
  402.    }
  403.  
  404.    boolean CanCloseCourse(CCourse var1) {
  405.       CDrawObj var2 = null;
  406.       boolean var3 = false;
  407.       synchronized(this.m_DrawObjectList){}
  408.  
  409.       try {
  410.          try {
  411.             var2 = this.m_DrawObjectList.GetHead();
  412.          } catch (NoSuchElementException var11) {
  413.             var3 = true;
  414.          }
  415.  
  416.          while(!var3) {
  417.             if (var2 != null && var1 == var2.GetIconObjectsCourse()) {
  418.                var1.m_bCloseWhenPossible = true;
  419.                boolean var6 = false;
  420.                return var6;
  421.             }
  422.  
  423.             try {
  424.                var2 = this.m_DrawObjectList.GetNext();
  425.             } catch (NoSuchElementException var10) {
  426.                var3 = true;
  427.             }
  428.          }
  429.  
  430.          return true;
  431.       } catch (Throwable var12) {
  432.          throw var12;
  433.       }
  434.    }
  435.  
  436.    boolean ResizeWindow(int var1, int var2) {
  437.       boolean var3 = false;
  438.       if (this.m_OffScreenBmp == null) {
  439.          var3 = true;
  440.       } else if (this.m_OffScreenBmp.getWidth((ImageObserver)null) != var1 || this.m_OffScreenBmp.getHeight((ImageObserver)null) != var2) {
  441.          var3 = true;
  442.       }
  443.  
  444.       if (var3) {
  445.          this.m_OffScreenBmp = ((Component)this).createImage(var1, var2);
  446.          this.m_pOffScreenDC = this.m_OffScreenBmp.getGraphics();
  447.          ((Applet)this).resize(var1, var2);
  448.       }
  449.  
  450.       return var3;
  451.    }
  452.  
  453.    COffScreenView() {
  454.       if (((Component)this).getBackground() != null) {
  455.          this.m_colBg = ((Component)this).getBackground();
  456.       }
  457.  
  458.    }
  459.  
  460.    void RemoveAllDrawObjects(CCourse var1, boolean var2) {
  461.       synchronized(this.m_DrawObjectList){}
  462.  
  463.       try {
  464.          if (var1 == null && var2) {
  465.             this.m_DrawObjectList.RemoveAll();
  466.             Globals.theAnimThread.RemoveAllAnimObjects();
  467.             this.CloseCoursesIfPossible();
  468.          } else {
  469.             CDrawObj var3 = null;
  470.             boolean var4 = false;
  471.             boolean var5 = false;
  472.  
  473.             try {
  474.                var3 = this.m_DrawObjectList.GetHead();
  475.             } catch (NoSuchElementException var14) {
  476.                var4 = true;
  477.             }
  478.  
  479.             while(!var4) {
  480.                var5 = false;
  481.                if (var3 != null && var3.GetIconObject() != null && (var1 == null || var3.GetIconObjectsCourse() == var1) && (!Globals.thePresView.IsLayerLocked(var3.GetIconObject().GetZOrder()) || var2)) {
  482.                   if (this.m_DrawObjectList.removeElement(var3)) {
  483.                      var5 = true;
  484.                      this.InvalObj(var3);
  485.                      var3.GetIconObject().FreeObject();
  486.                      Globals.theAnimThread.RemoveAnimObject(var3);
  487.                   } else {
  488.                      var4 = true;
  489.                   }
  490.                }
  491.  
  492.                if (var5) {
  493.                   try {
  494.                      var3 = this.m_DrawObjectList.GetCurrent();
  495.                   } catch (NoSuchElementException var13) {
  496.                      var4 = true;
  497.                   }
  498.                } else {
  499.                   try {
  500.                      var3 = this.m_DrawObjectList.GetNext();
  501.                   } catch (NoSuchElementException var12) {
  502.                      var4 = true;
  503.                   }
  504.                }
  505.             }
  506.          }
  507.       } catch (Throwable var15) {
  508.          throw var15;
  509.       }
  510.  
  511.    }
  512.  
  513.    void RenderAndDrawWithEffect(CIconObject var1, CRect var2) {
  514.       if (var2 == null) {
  515.          var2 = ((CWindow)this).GetClientRect();
  516.       }
  517.  
  518.       if (var1 != null) {
  519.          if (var1.GetEffectData().m_cEffectType != 4 && var1.GetEffectData().m_cEffectType != 6) {
  520.             this.Render(var2);
  521.          }
  522.  
  523.          CEffectThread var3 = new CEffectThread(var1, var2);
  524.          if ((var1.GetEffectData().m_nFlags & 16384) != 0) {
  525.             var3.DoEffect();
  526.             return;
  527.          }
  528.  
  529.          var3.start();
  530.       }
  531.  
  532.    }
  533.  
  534.    void RenderObjectList(Graphics var1, CRect var2) {
  535.       CDrawObj var3 = null;
  536.       boolean var4 = false;
  537.       synchronized(this.m_DrawObjectList){}
  538.  
  539.       try {
  540.          try {
  541.             var3 = this.m_DrawObjectList.GetHead();
  542.          } catch (NoSuchElementException var11) {
  543.             var4 = false;
  544.          }
  545.  
  546.          while(!var4) {
  547.             if (var3 != null && (var3.GetFlags() & 512) == 0) {
  548.                var3.Render(var1, var2, 0);
  549.             }
  550.  
  551.             try {
  552.                var3 = this.m_DrawObjectList.GetNext();
  553.             } catch (NoSuchElementException var10) {
  554.                var4 = true;
  555.             }
  556.          }
  557.       } catch (Throwable var12) {
  558.          throw var12;
  559.       }
  560.  
  561.    }
  562.  
  563.    void InvalObj(CDrawObj var1) {
  564.       CRect var2 = new CRect();
  565.       var2.reshape(var1.GetDrawRect());
  566.       if (!((Rectangle)var2).isEmpty()) {
  567.          this.InvalidateOffScreenRect(var2);
  568.       }
  569.  
  570.    }
  571.  
  572.    CDrawObj AddDrawObject(CIconObject var1, int var2, boolean var3) {
  573.       Object var4 = null;
  574.       boolean var5 = false;
  575.       synchronized(this.m_DrawObjectList){}
  576.  
  577.       try {
  578.          try {
  579.             var4 = this.m_DrawObjectList.GetHead();
  580.          } catch (NoSuchElementException var12) {
  581.             var5 = true;
  582.          }
  583.  
  584.          while(!var5 && ((CDrawObj)var4).GetIconObject() != var1) {
  585.             try {
  586.                var4 = this.m_DrawObjectList.GetNext();
  587.             } catch (NoSuchElementException var11) {
  588.                var5 = true;
  589.             }
  590.          }
  591.  
  592.          if (var5) {
  593.             if ((var2 & 2) <= 0 && (var2 & 4) <= 0) {
  594.                var4 = new CDrawRect(var1, var2);
  595.             } else {
  596.                var4 = new CDrawPoly(var1, var2);
  597.             }
  598.  
  599.             this.m_DrawObjectList.Insert((CDrawObj)var4);
  600.          }
  601.       } catch (Throwable var13) {
  602.          throw var13;
  603.       }
  604.  
  605.       if (var4 != null && (((CDrawObj)var4).GetFlags() & 512) == 0 && (var5 || var3)) {
  606.          if ((var2 & 2048) != 0 && var5) {
  607.             this.RenderAndDrawWithEffect(((CDrawObj)var4).GetIconObject(), ((CDrawObj)var4).GetDrawRect());
  608.          } else {
  609.             this.InvalidateOffScreenRect(((CDrawObj)var4).GetDrawRect());
  610.          }
  611.       }
  612.  
  613.       return (CDrawObj)var4;
  614.    }
  615.  
  616.    void RemoveAllTemporaryDrawObjects() {
  617.       CDrawObj var1 = null;
  618.       boolean var2 = false;
  619.       boolean var3 = false;
  620.       synchronized(this.m_DrawObjectList){}
  621.  
  622.       try {
  623.          try {
  624.             var1 = this.m_DrawObjectList.GetHead();
  625.          } catch (NoSuchElementException var12) {
  626.             var2 = true;
  627.          }
  628.  
  629.          while(!var2) {
  630.             var3 = false;
  631.             if (var1 != null) {
  632.                if (var1.GetIconObject() != null && (var1.GetFlags() & 128) != 0) {
  633.                   if (this.m_DrawObjectList.removeElement(var1)) {
  634.                      var3 = true;
  635.                      this.InvalObj(var1);
  636.                      var1.GetIconObject().FreeObject();
  637.                      Globals.theAnimThread.RemoveAnimObject(var1);
  638.                   } else {
  639.                      var2 = true;
  640.                   }
  641.                }
  642.  
  643.                var1.SetFixed();
  644.             }
  645.  
  646.             if (var3) {
  647.                try {
  648.                   var1 = this.m_DrawObjectList.GetCurrent();
  649.                } catch (NoSuchElementException var11) {
  650.                   var2 = true;
  651.                }
  652.             } else {
  653.                try {
  654.                   var1 = this.m_DrawObjectList.GetNext();
  655.                } catch (NoSuchElementException var10) {
  656.                   var2 = true;
  657.                }
  658.             }
  659.          }
  660.       } catch (Throwable var13) {
  661.          throw var13;
  662.       }
  663.  
  664.    }
  665.  
  666.    boolean OnMouseClick(int var1, int var2, Point var3) {
  667.       CDrawObj var4 = null;
  668.       boolean var5 = false;
  669.       boolean var6 = false;
  670.       synchronized(this.m_DrawObjectList){}
  671.  
  672.       try {
  673.          try {
  674.             var4 = this.m_DrawObjectList.GetHead();
  675.          } catch (NoSuchElementException var13) {
  676.             var5 = true;
  677.          }
  678.  
  679.          while(!var5) {
  680.             if (var4 != null) {
  681.                var4.GetIconObject().OnMouseClick(var1, var2, var3, 6, var4.GetDrawRect());
  682.             }
  683.  
  684.             try {
  685.                var4 = this.m_DrawObjectList.GetNext();
  686.             } catch (NoSuchElementException var12) {
  687.                var5 = true;
  688.             }
  689.          }
  690.       } catch (Throwable var14) {
  691.          throw var14;
  692.       }
  693.  
  694.       if (Globals.CUR_COURSE != null && Globals.CUR_COURSE.OnMouseClick(var1, var2, var3)) {
  695.          var6 = true;
  696.       }
  697.  
  698.       return var6;
  699.    }
  700.  
  701.    void CloseCoursesIfPossible() {
  702.       CCourse var1 = null;
  703.       boolean var2 = false;
  704.  
  705.       try {
  706.          var1 = Globals.thePresView.m_CourseList.GetHead();
  707.       } catch (NoSuchElementException var4) {
  708.          var2 = true;
  709.       }
  710.  
  711.       while(!var2) {
  712.          if (var1 != null && var1.m_bCloseWhenPossible && this.CanCloseCourse(var1)) {
  713.             Globals.thePresView.CloseCourse(var1);
  714.          }
  715.  
  716.          try {
  717.             var1 = Globals.thePresView.m_CourseList.GetNext();
  718.          } catch (NoSuchElementException var3) {
  719.             var2 = true;
  720.          }
  721.       }
  722.  
  723.    }
  724.  
  725.    CRect RemoveDrawObject(byte var1, boolean var2) {
  726.       CRect var3 = new CRect();
  727.       if (!Globals.thePresView.IsLayerLocked((short)var1)) {
  728.          CRect var4 = new CRect();
  729.          CDrawObj var5 = null;
  730.          boolean var6 = false;
  731.          boolean var7 = false;
  732.          boolean var8 = false;
  733.          synchronized(this.m_DrawObjectList){}
  734.  
  735.          try {
  736.             try {
  737.                var5 = this.m_DrawObjectList.GetHead();
  738.             } catch (NoSuchElementException var17) {
  739.                var6 = true;
  740.             }
  741.  
  742.             while(!var6) {
  743.                var7 = false;
  744.                if (var5 != null && var5.GetIconObject() != null && var5.GetIconObject().GetZOrder() == var1) {
  745.                   var4.reshape(var5.GetDrawRect());
  746.                   if (!((Rectangle)var4).isEmpty()) {
  747.                      this.InvalidateOffScreenRect(var4);
  748.                      if (((Rectangle)var3).isEmpty()) {
  749.                         var3.reshape(var4);
  750.                      } else {
  751.                         var3 = var3.union(var4);
  752.                      }
  753.                   }
  754.  
  755.                   if (!var2 && this.m_DrawObjectList.removeElement(var5)) {
  756.                      var5.GetIconObject().FreeObject();
  757.                      Globals.theAnimThread.RemoveAnimObject(var5);
  758.                      var7 = true;
  759.                      var8 = true;
  760.                   }
  761.                }
  762.  
  763.                if (var7) {
  764.                   try {
  765.                      var5 = this.m_DrawObjectList.GetCurrent();
  766.                   } catch (NoSuchElementException var16) {
  767.                      var6 = true;
  768.                   }
  769.                } else {
  770.                   try {
  771.                      var5 = this.m_DrawObjectList.GetNext();
  772.                   } catch (NoSuchElementException var15) {
  773.                      var6 = true;
  774.                   }
  775.                }
  776.             }
  777.          } catch (Throwable var18) {
  778.             throw var18;
  779.          }
  780.  
  781.          if (var8) {
  782.             this.CloseCoursesIfPossible();
  783.          }
  784.       }
  785.  
  786.       return var3;
  787.    }
  788. }
  789.